home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / bin / gettext.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  2005-07-26  |  4KB  |  115 lines

  1. #! /bin/sh
  2. #
  3. # Copyright (C) 2003, 2005 Free Software Foundation, Inc.
  4. #
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation; either version 2, or (at your option)
  8. # any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; if not, write to the Free Software
  17. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  18. #
  19.  
  20. # Find a way to echo strings without interpreting backslash.
  21. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
  22.   echo='echo'
  23. else
  24.   if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
  25.     echo='printf %s\n'
  26.   else
  27.     echo_func () {
  28.       cat <<EOT
  29. $*
  30. EOT
  31.     }
  32.     echo='echo_func'
  33.   fi
  34. fi
  35.  
  36. # This script is primarily a shell function library. In order for
  37. # ". gettext.sh" to find it, we install it in $PREFIX/bin (that is usually
  38. # contained in $PATH), rather than in some other location such as
  39. # $PREFIX/share/sh-scripts or $PREFIX/share/gettext. In order to not violate
  40. # the Filesystem Hierarchy Standard when doing so, this script is executable.
  41. # Therefore it needs to support the standard --help and --version.
  42. case "$0" in
  43.   gettext.sh | */gettext.sh | *\gettext.sh)
  44.     progname=$0
  45.     package=gettext-runtime
  46.     version=0.14.4
  47.     # func_usage
  48.     # outputs to stdout the --help usage message.
  49.     func_usage ()
  50.     {
  51.       echo "GNU gettext shell script function library version $version"
  52.       echo "Usage: . gettext.sh"
  53.     }
  54.     # func_version
  55.     # outputs to stdout the --version message.
  56.     func_version ()
  57.     {
  58.       echo "$progname (GNU $package) $version"
  59.       echo "Copyright (C) 2003-2005 Free Software Foundation, Inc.
  60. This is free software; see the source for copying conditions.  There is NO
  61. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
  62.       echo "Written by" "Bruno Haible"
  63.     }
  64.     if test $# = 1; then
  65.       case "$1" in
  66.         --help | --hel | --he | --h )
  67.           func_usage; exit 0 ;;
  68.         --version | --versio | --versi | --vers | --ver | --ve | --v )
  69.           func_version; exit 0 ;;
  70.       esac
  71.     fi
  72.     func_usage 1>&2
  73.     exit 1
  74.     ;;
  75. esac
  76.  
  77. # eval_gettext MSGID
  78. # looks up the translation of MSGID and substitutes shell variables in the
  79. # result.
  80. eval_gettext () {
  81.   gettext "$1" | (export PATH `envsubst --variables "$1"`; envsubst "$1")
  82. }
  83.  
  84. # eval_ngettext MSGID MSGID-PLURAL COUNT
  85. # looks up the translation of MSGID / MSGID-PLURAL for COUNT and substitutes
  86. # shell variables in the result.
  87. eval_ngettext () {
  88.   ngettext "$1" "$2" "$3" | (export PATH `envsubst --variables "$1 $2"`; envsubst "$1 $2")
  89. }
  90.  
  91. # Note: This use of envsubst is much safer than using the shell built-in 'eval'
  92. # would be.
  93. # 1) The security problem with Chinese translations that happen to use a
  94. #    character such as \xe0\x60 is avoided.
  95. # 2) The security problem with malevolent translators who put in command lists
  96. #    like "$(...)" or "`...`" is avoided.
  97. # 3) The translations can only refer to shell variables that are already
  98. #    mentioned in MSGID or MSGID-PLURAL.
  99. #
  100. # Note: "export PATH" above is a dummy; this is for the case when
  101. # `envsubst --variables ...` returns nothing.
  102. #
  103. # Note: In eval_ngettext above, "$1 $2" means a string whose variables set is
  104. # the union of the variables set of "$1" and "$2".
  105. #
  106. # Note: The minimal use of backquote above ensures that trailing newlines are
  107. # not dropped, not from the gettext invocation and not from the value of any
  108. # shell variable.
  109. #
  110. # Note: Field splitting on the `envsubst --variables ...` result is desired,
  111. # since envsubst outputs the variables, separated by newlines. Pathname
  112. # wildcard expansion or tilde expansion has no effect here, since the words
  113. # output by "envsubst --variables ..." consist solely of alphanumeric
  114. # characters and underscore.
  115.